import numpy as np
import pandas as pd

def ylfy(df, search_column1, search_column2, update_column1, update_column2):
    """
    在Excel文件中特定列中填入数据，如果该行中的某一列包含指定关键字。

    :param file_path: Excel文件的路径
    :param search_column1: 要搜索的列的表头名称
    :param search_column2: 要搜索的列的表头名称
    :param search_column3: 要搜索的列的表头名称
    :param search_column4: 要搜索的列的表头名称
    :param search_column5: 要搜索的列的表头名称
    :param update_column: 要更新的列的表头名称
    """
    try:
        # 读取Excel文件
        df.replace(np.nan, "", inplace=True)  # 将NaN替换为None
        # 遍历每一行
        for index, row in df.iterrows():
            gz = str(row[search_column1])
            id_number = row[search_column2]  # 获取身份证号
            gender_digit = int(id_number[:3])  # 获取身份证号中前三位
            yl = str(row[update_column2])
            if yl == "" or pd.isna(yl):
                if gz == "无" or gz == "无业" or gz == "不详" or gz == '':
                    if gender_digit == "110":
                        df.at[index, update_column2] = "城镇居民基本医疗保险"
                    else:
                        df.at[index, update_column2] = "全自费"
                else:
                    df.at[index, update_column2] = "城镇居民基本医疗保险"
        # 保存更新后的Excel文件
        print("[医疗费用类型]已完成处理。")
        return df
    except Exception as e:
        print(f"医疗费用类型处理时发生错误：{e}")
